package com.jrauto.CarAppBackend.controller;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.jrauto.CarAppBackend.model.Configs;
import com.jrauto.CarAppBackend.service.ConfigsService;
import jakarta.annotation.Resource;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * @author : huiMing
 * Date : 2025年06月30日 10:24
 * @version V1.0
 */
@RestController // 标记这是一个 RESTful Controller
@RequestMapping("/configs") // 设置基础请求路径
public class ConfigsController {
    @Resource // 注入 ConfigsService
    private ConfigsService configsService;

    // --- 增 (Create) ---
    // POST /configs
    @PostMapping("/add")
    public boolean addConfig(@RequestBody @Validated Configs config) {
        // save() 方法由 IService 提供，用于插入数据
        return configsService.save(config);
    }

    // --- 删 (Delete) ---
    // DELETE /configs/{id}
    @DeleteMapping("del/{id}")
    public boolean deleteConfig(@PathVariable Integer id) {
        // removeById() 方法由 IService 提供，用于根据主键删除数据
        return configsService.removeById(id);
    }

    // --- 改 (Update) ---
    // PUT /configs
    @PutMapping("/update")
    public boolean updateConfig(@RequestBody @Validated Configs config) {
        // updateById() 方法由 IService 提供，用于根据ID更新数据
        // 请求体中必须包含 ID
        return configsService.updateById(config);
    }

    // --- 查 (Read) ---
    // GET /configs/{id} - 查询单个
    @GetMapping("/{id}")
    public Configs getConfigById(@PathVariable Integer id) {
        // getById() 方法由 IService 提供，用于根据主键查询单个数据
        return configsService.getById(id);
    }

    // GET /configs - 查询全部
    @GetMapping("/getAll")
    public List<Configs> getAllConfigs() {
        // list() 方法由 IService 提供，用于查询所有数据
        return configsService.list();
    }

    // GET /configs/search?name=... - 根据名称模糊查询
    @GetMapping("/search")
    public List<Configs> getConfigsByName(@RequestParam String name) {
        // 使用 QueryWrapper 构建查询条件，实现更灵活的查询
        QueryWrapper<Configs> queryWrapper = new QueryWrapper<>();
        queryWrapper.like("name", name); // 对应 SQL: WHERE name LIKE '%name%'
        return configsService.list(queryWrapper);
    }
}
